#include<stdio.h>
#include<string.h>
#include"tools.h"
#include"student.h"
#include"getch.h"
#include<stdlib.h>
extern struct Student stu[100];
extern int stu_n;
const char* stu_passwd="123456";
int flag1=0;
//平均分
float Average(float* a,int stu_n)
{
	float num=0;
	for(int i=0;i<stu_n;i++)
	{
		num+=a[i];
	}
	num/=(float)stu_n;
	return num;

}
//排序函数
void Bubbling_chinese()
{
	float a[stu_n];
	for(int k=0;k<stu_n;k++)
	{
		a[k]=stu[k].Chinese;
	}
	
	for(int i=0; i<stu_n-1;i++)
	{
		for(int j=i+1; j<stu_n;j++)
		{
			if(a[i] < a[j])
			{
				float t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
	}
	printf("语文成绩排名为:");
	for(int c=0;c<stu_n;c++)
	{
		printf("%.2f ",a[c]);
	}
	printf("\n语文平均分为:%.2f",Average(a,stu_n));
	printf("\n最高分:%f,最低分%.2f",a[0],a[stu_n-1]);
}

void Bubbling_math()
{
	float a[stu_n];
	for(int k=0;k<stu_n;k++)
	{
		a[k]=stu[k].Math;
	}
	
	for(int i=0;i<stu_n-1;i++)
	{
		for(int j=i;j<stu_n;j++)
		{
			if(a[i]<a[j])
			{
				float temp=a[i];
				a[i]=a[j];
				a[j]=temp;
			}
		}
	}
	printf("\n数学成绩排名为:");
	for(int c=0;c<stu_n;c++)
	{
		printf("%.2f ",a[c]);
	}
	printf("\n数学平均分为:%.2f",Average(a,stu_n));
	printf("\n最高分:%.2f,最低分%.2f",a[0],a[stu_n-1]);
}

void Bubbling_english()
{
	float a[stu_n];
	for(int k=0;k<stu_n;k++)
	{
		a[k]=stu[k].English;
	}
	
	for(int i=0;i<stu_n-1;i++)
	{
		for(int j=i+1;j<stu_n;j++)
		{
			if(a[i]<a[j])
			{
				float temp=a[i];
			  	a[i]=a[j];
				a[j]=temp;
			}
		}
	}
	printf("\n英语成绩排名为:");
	for(int c=0;c<stu_n;c++)
	{
		printf("%.2f ",a[c]);
	}
	printf("\n英语平均分为:%.2f",Average(a,stu_n));
	printf("\n最高分:%f,最低分%.2f",a[0],a[stu_n-1]);
}

//查询成绩
void Look_grade()
{
	//排列语文成绩
	Bubbling_chinese();
	//排列数学成绩
	Bubbling_math();
	//排列英语成绩
	Bubbling_english();
	puts("按任意键继续!");
	getchar();
}
/*通过学号查找学生 返回的是数组下标*/
int Search_JobName_stu(int name)
{
	int i;
	for(i = 0; i < stu_n; i++)
	{
		if(stu[i].JobName == name)
		{
			return i;
		}
	}
	return -1;

}
//察看个人信息
void Look_data()
{
	int name1=0;
log:	puts("请输入学号:");
	scanf("%d",&name1);

	int i=Search_JobName_stu(name1);
	if(i==-1)
		{
			puts("错误的学号!");
			goto log;
		}
		else
		{
			printf("姓名:%s  学号:%d  性别:%c 身份证:%s",stu[i].Name,
			stu[i].JobName,stu[i].Sex,stu[i].ID);
			puts("按任意键继续!");
			getchar();
		}
}
//密码修改
void Amend_passwd(char* mima)
{
	char temp_mima1[10],temp_mima2[10];
flag: 

	while(1)
	{
			puts("\n请输入新密码:\n");
			get_pwd(temp_mima1);
			printf("\n");
			puts("请确认密码:");
			get_pwd(temp_mima2);
			if(strcmp(temp_mima1,temp_mima2)==0)
			{
				puts("密码已经修改,请记住新密码\n");
				strcpy(mima,temp_mima1);
				getch();
				return;
			}
			else
			{
				puts("两次输入不一致,修改失败!请输入新的密码:\n");
				goto flag;
				getch();
				break;
			}

	}
}
//密码修改
void Change_mima()
{
	int name2=0;
	puts("请输入学号:");
	scanf("%d",&name2);

	int i=Search_JobName_stu(name2);
	Amend_passwd(stu[i].passwd);
}
//学生登陆成功界面
void Student_printf()
{
	int choice;
	while(1)
	{
		getchar();
		do
		{
			system("clear");
			puts("-----欢迎使用该系统,您可以选择如下功能-----");
			puts("     1.查询成绩");
			puts("     2.修改密码");
			puts("     3.察看个人信息");
			puts("     4.返回上一级");
			puts("--------------------------------------------");
			puts("请选择功能:");
			scanf("%d",&choice);
			getchar();

		}while(choice<1||choice>4);
		switch(choice)
		{
			case 1:Look_grade();break;
			case 2:Change_mima();break;
			case 3:Look_data();break;
			case 4:return;
		}
	}
}
/*第一次登陆
void First_login(int a)
{
	char stu_passwd[10];
	while(1)
	{
	
			printf("请输入初始密码:");
			scanf("%s",stu_passwd);
			getchar();
			if(strcmp(stu_passwd,stu_passwd)!=0)
			{
				puts("密码错误!");
				
				continue;
			}
			else
			{
				puts("第一次登陆,请修改密码");
				Amend_passwd(stu[a].passwd);
				stu[a].first=1;

				return;
			}
			
	}				
	

}
*/
//登陆
void  Student_login()
{
	int index;
	int jobname=0;
	char passwd[10];
	char temp1[10],temp2[10];
	while(1)
	{
	log:	printf("请输入学号:");
			scanf("%d",&jobname);
			getchar();

			index=Search_JobName_stu(jobname);
			if(-1==index)
			{
				puts("没有该学生!请重新输入!\n");
				goto log;
			}
			if(stu[index].first)
			{
				while(1)
				{
					puts("请输入密码:");
					get_pwd(passwd);
					
					if(strcmp(passwd,stu[index].passwd)!=0)
					{
						puts("密码错误!");
						continue;
					}
						flag1=1;
						return;
				}
			}
			else
			{
				while(1)
				{
					puts("第一次登录---请修改密码!\n");
					puts("请输入初始密码:");
				
					get_pwd(passwd);
					printf("\n");
					if(strcmp(passwd,stu_passwd)!=0)
					{
						puts("密码错误!");
						continue;
					}
					else
					{
						puts("请输入新密码:");
						get_pwd(temp1);
						puts("请确认新密码:");
						get_pwd(temp2);
						if(strcmp(temp1,temp2)!=0)
						{	
							puts("");
							puts("两次输入不一样,重置失败!");
							continue;
						}
						else
						{
							strcpy(stu[index].passwd,temp1);
							stu[index].first=1;
							puts("---修改密码成功---!");
							puts("按任意键结束!");
							getchar();
							getchar();
							return;
						}
					}

				}
		}
	}

}
void Student()
{
	Student_login();
	if(flag1==1)
	{
		Student_printf();
	}
}
